웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > php

[PHP] 문자열을 잘라 배열로 만들기 또는 배열을 문자열로 바꾸기, explode(), implode()

Last Modified : 2017-12-20 / Created : 2016-06-14
25,986
View Count

PHP 언어에서 문자열을 특정 문자를 기준으로(구분하여) 잘라서 각각의 배열로 만들거나 아니면  배열을 구분 문자를 사용해 하나로 합치는 방법에 대하여 알아봅니다. 이때 사용하는 함수는 explode()implode()입니다. 아래는 이를 사용하는 간단한 방법입니다.

explode('구분문자', '해당 문자열');
implode('구분문자', '해당하는 배열')


! 언제 이 함수가 필요할까요? 이 함수가 필요한 경우는 너무나 많습니다. 특히 데이터베이스에 배열값을 저장하기 위한 방법도 그 중 하나입니다. 예를들어 누군가의 정보를 베이터베이스에 저장하려고 할때 배열상태로 저장할 수 없으므로 배열을 문자열로 변경하여 저장하여야 합니다. 물론 나중에 이를 불러와 다시 배열로 만들기 위해서도 사용합니다. 아래는 전화번호를 사용하여 만든 예제소스입니다. 그럼, 아래 예제를 봐주세요.



# explode() 사용방법 및 예제보기 explode() 함수는 아래의 문법으로 사용합니다.

explode(구분문자, 텍스트, 반환할 개수)


여기서 반활할 개수는 옵션사항으로 반환할 개수를 선택할 수 있습니다.

  • 0 - 모든 배열을 반환
  • 0 이상의 n값 - n의 개수만큼 배열을 반환
  • 0 이하의 n값 - 마지막의 개수에서 n개만큼 뺀 나머지를 반환함

아래는 explode() 함수의 간단한 예제입니다.
<?php
  $string = '010-1234-5678';
  $test = explode('-', $string);
?>

위 코드를 보면 전화번호가 저장되어 있습니다. 우리는 구분문자 -를 기준으로 배열 $test에 저장하려 합니다. 이처럼 구분문자가 사용된 경우 이를 간단하게 제거하기 위한 방법으로도 사용이 가능합니다. 결과는 아래와 같습니다.
$test[0] = '010';
$test[1] = '1234';
$test[2] = '5678';

// 문자열이 -기호를 기준으로 분리되어 배열로 저장됨

이처럼 구분자 슬래쉬(-)가 사라지고 각각의 값들이 배열에 각각 저장되었습니다. 아래는 이와 반대로 저장된 배열값들을 구분자를 추가하여 하나의 문제열로 반환하기 위한 방법입니다. 이때 implode()를 사용합니다. 그럼 예제를 하나 더 보도록 하겠습니다. 아래는 ip주소를 . 구둣점으로 구분해 배열로 저장하는 예제입니다.
<?php
  $url = 'www.shortcut.com';
  $urlArray = explode('.', $url);
?>

위 예제에서는 url 주소를 구분하여 각각 www, shortcut, com을 따로 배열 $urlArray에 저장하였습니다. 그럼 이 변수가 가지는 결과를 출력해보도록 하겠습니다.
print_r($urlArray); // 출력결과 보기

$urlArray[0] => 'www';
$urlArray[1] => 'shortcut';
$urlArray[2] => 'com';

! 반환 Limit을 설정한 예제

세번째 인자인 Limit을 설정하는 경우 아래와 같이 사용할 수 있습니다.
<?php
  $name = 'web, is, free, com';
  echo explode(',', $name, 1);
  echo explode(',', $name, -2);
?>

각각 아래와 같이 값을 가지게됩니다.
[ 'web' ]
[ 'web', 'is' ]


# implode() 예제보기 앞에서 얘기한 것처럼 implode()explode()의 정반대로 각각의 배열들을 특정 구분자를 사용해 문자열로 변환해줍니다. 그럼 아래 예제를 참고하세요.
<?php
  $string[0] = '010';
  $string[1] = '1234';
  $string[2] = '5678';
  $test2 = implode('-', $string); // 여기서 test는 물론 배열입니다.
?>

만약 저장된 배열값들을 구분자 - 기호를 사용하여 문자열로 반환하는 방법은 위와 같습니다. 이를 사용할 경우 아래와 같이 결과가 나타나게됩니다.
$test2 = '010-1234-5678';
// 배열이 -기호를 기준으로 병합되어 하나의 문자열로 저장됨

참고로 split()도 동일한 기능을 가지고 있으나 explode()가 더 확실하고 빠르며 PHP 5.3 이후부터 split()은 축소되었습니다.

Previous

[PHP] 이전 페이지 주소 불러오기

Previous

[PHP] 배열 값 소팅, sort()